//求 1+2+...+n ，要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句（A?B:C）。 
//
// 
//
// 示例 1： 
//
// 输入: n = 3
//输出: 6
// 
//
// 示例 2： 
//
// 输入: n = 9
//输出: 45
// 
//
// 
//
// 限制： 
//
// 
// 1 <= n <= 10000 
// 
// Related Topics 位运算 递归 脑筋急转弯 👍 432 👎 0

package com.cute.leetcode.editor.cn;
public class Qiu12nLcof {
    public static void main(String[] args) {
        Solution solution = new Qiu12nLcof().new Solution();
    }
    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        /**
         * 只用加减法求1-n的和，而且不能用循环和判断语句，只能用递归
         * 递归如何结束呢？--->利用短路 &&
         */
        public int sumNums(int n) {
            // 靠短路实现能否递归，如果n == 1了，&&右边根本不会执行到，右边的>0只是为了满足boolean类型的要求，没其他意义
            boolean flag = n > 1 && (n += sumNums(n-1)) > 0;
            return n;
        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}